package java_learn.java_jinjie.IO;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

/**
 * 字节输入流一次读取多个字节的方法:
 * int read(byte[] b) 从输入流中读取一定数量的字节，并将其存储在缓冲区数组 b 中。
 * 明确两件事情:
 * 1.方法的参数byte[]的作用?
 * 起到缓冲作用,存储每次读取到的多个字节
 * 数组的长度一把定义为1024(1kb)或者1024的整数倍
 * 2.方法的返回值int是什么?
 * 每次读取的有效字节个数
 * <p>
 * String类的构造方法
 * String(byte[] bytes) :把字节数组转换为字符串
 * String(byte[] bytes, int offset, int length) 把字节数组的一部分转换为字符串 offset:数组的开始索引 length:转换的字节个数
 *
 * @Author: 李浩然
 * @Date: 2021/1/13 4:54 下午
 */
public class Demo02InutStream {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream = new FileInputStream("/Users/lihaoran/Desktop/project/IdeaProjects/java-blockchain/java_learn/src/main/java/java_learn/java_jinjie/IO/a.txt");
        byte[] bytes = new byte[1024];//存储读取到的多个字节
        int len = 0; //记录每次读取的有效字节个数
        while ((len = fileInputStream.read(bytes)) != -1) {
            //String(byte[] bytes, int offset, int length) 把字节数组的一部分转换为字符串 offset:数组的开始索引 length:转换的字节个数
            System.out.println(new String(bytes, 0, len));
        }

        //释放资源
        fileInputStream.close();
    }
}
